import axios from 'axios';
import Element from "element-ui";

import router from '../router';
// axios.defaults.timeout = 5000;  //超市时间是5秒
// axios.defaults.withCredentials = true;  //允许跨域
// //Content-Type 响应头
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
//基础url
axios.defaults.baseURL = "http://localhost:8888";

// 2.请求拦截器
axios.interceptors.request.use(config => {
      return config;
    },
    error => {
      return Promise.error(error);
    })

axios.interceptors.response.use(response => {
      const res = response.data;
      // console.log("后置拦截")
      // 当结果的code是否为200的情况
      // console.log(res.code)
      if (res.code === 200) {
        return response
      } else {
        // 弹窗异常信息
        Element.Message({
          message: response.data.msg,
          type: 'error',
          duration: 2 * 1000
        })
        // 直接拒绝往下面返回结果信息
        return Promise.reject(response.data.msg)
      }

    },
    error => {
      // console.log('err' + error)// for debug
      if(error.response.data) {
        error.message = error.response.data.msg
      }
      // 根据请求状态觉得是否登录或者提示其他
      if (error.response.status === 401) {
        store.commit('REMOVE_INFO');
        router.push({
          path: '/login'
        }).then(r => {});
        error.message = '请重新登录';
      }
      if (error.response.status === 403) {
        error.message = '权限不足，无法访问';
      }
      Element.Message({
        message: error.message,
        type: 'error',
        duration: 3 * 1000
      })
      return Promise.reject(error)
    })
/**
 * 封装get方法
 */
export function get(url,params={}){
  return new Promise((resolve,reject) => {
    axios.get(url,{params:params})
      .then(response =>{
        resolve(response.data);
      })
      .catch(err =>{
        reject(err);
      })
  });
}

/**
 * 封装post方法
 */
export function post(url,data={}){
  return new Promise((resolve,reject) => {
    axios.post(url,data)
      .then(response =>{
        // console.log(response)
        resolve(response);
      })
      .catch(err =>{
        reject(err);
      })
  });
}
